package com.ai.manager.edu.cms.user.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.ai.common.model.Pagination;
import com.ai.dao.edu.cms.user.RoleMapper;
import com.ai.manager.edu.cms.user.RoleManager;
import com.ai.model.edu.cms.backoperator.Role;
import com.ai.model.edu.cms.backoperator.dto.RoleDTO;
import com.ai.model.edu.cms.backoperator.vo.RoleVO;

@Component("roleManager")
public class RoleManagerImpl implements RoleManager {
    @Resource
    private RoleMapper roleMapper;

    /**
     * Description ： 根据DTO查找角色翻页信息
     * 
     * nyj
     * 
     * @param roleDTO
     * @return
     * @since
     *
     */
    public Pagination<RoleVO> selectRolePagByDTO(RoleDTO roleDTO) {
        Pagination<RoleVO> pg = new Pagination<RoleVO>();
        // 查找单页信息
        List<RoleVO> rows = roleMapper.selectRoleByDTO(roleDTO);
        // 查找总条数
        Integer total = roleMapper.selectRoleCountByDTO(roleDTO);
        pg.setRows(rows);
        pg.setTotal(total);
        return pg;
    }

    /**
     * Description ： 查找所有角色信息
     * 
     * nyj
     * 
     * @return
     * @since
     *
     */
    public List<RoleVO> selectAllRoleInfo() {
        return roleMapper.selectAllRoleInfo();
    }

    /**
     * Description ： 新增角色信息
     * 
     * nyj
     * 
     * @since
     *
     */
    public void addRoleInfo(Role role) {
        roleMapper.addRoleInfo(role);
    }

    /**
     * Description ： 根据角色名称查找角色信息
     * 
     * nyj
     * 
     * @param roleName
     * @return
     * @since
     *
     */
    public RoleVO selectRoleByRoleName(String roleName) {
        return roleMapper.selectRoleByRoleName(roleName);
    }

    /**
     * Description ：启用角色
     * 
     * nyj
     * 
     * @param roleDTO
     * @return
     * @since
     *
     */
    public int enableRole(RoleDTO roleDTO) {
        return roleMapper.enableRole(roleDTO);
    }

    /**
     * Description ：冻结角色
     * 
     * nyj
     * 
     * @param roleDTO
     * @return
     * @since
     *
     */
    public int unableRole(RoleDTO roleDTO) {
        return roleMapper.unableRole(roleDTO);
    }

    /**
     * Description ： 根据角色ids 查询可用角色信息<br>
     * 
     * yangwb
     * 
     * @param ids
     * @return
     * @since
     * 
     */
    public List<RoleVO> findRoleVOsByIds(List<Long> ids) {
        return roleMapper.findRoleVOsByIds(ids);
    }

    /**
     * Description ： 根据ID删除角色
     * 
     * nyj
     * 
     * @param roleDTO
     * @return
     * @since
     *
     */
    public int deleteRoleById(RoleDTO roleDTO) {
        return roleMapper.deleteRoleById(roleDTO);
    }
}
